package com.ys.service.logistics;

import com.ys.vo.R;

import java.util.List;
import java.util.Map;

/**
 * 报关单
 */
public interface TlCustomsDeclarationService {

	//新增
	R add(Map<String, Object> params, Long menuId) throws Exception ;

	//修改
	R update(Map<String, Object> params, Long menuId) throws Exception ;

	//删除
	R del(Long id)throws Exception;

	//流转通过
	R flowPass(Long id,String userId) throws Exception;

	//打印
	R doPrint(String bid) throws Exception;

	//根据bid，获取子表信息
	List<Map<String, Object>> getItemListByBid(String bid) throws Exception;

	/**
	 * 汇总发票扣减列表
	 * @param conditionInfo
	 * 发票查询条件信息，必须包含：
	 * 发票型号（invoiceModelNo）、发票品名（invoiceName）、报关信息子件表id（decCustomSubId）
	 * 购买方公司名称（vname）、销售方公司名称（partnerName）、本次报关数量（customsQuantity）
	 *
	 * @return 发票型号（invoiceModelNo）、发票品名（invoiceName）、报关信息子件表id（decCustomSubId）
	 * 	 		购买方公司名称（vname）、销售方公司名称（partnerName）、发票号码（invoiceNo）、境内货源地（sourceAddress）
	 * 			发票剩余报关数量（invoiceSurplusNum）、扣减数量(deductQuantity)、扣减前数量(deductBeforeQuantity)
	 * 			报关未扣减数量(不够扣减)(deductQuantityByNo)
	 */
	List<Map<String, Object>> getInvoiceDeduction(List<Map<String, Object>> conditionInfo) throws Exception;

	//同getInvoiceDeduction，将连同无发票信息的一同返回
	List<Map<String, Object>> getInvoiceDeductionAddInvoice(List<Map<String, Object>> itemList) throws Exception;

	//流转驳回
	R flowRefuse(String bid, String reason,String userId) throws Exception;

	//流转退回
	R flowInit(String bid, String reason,String userId) throws Exception;

	//获取列表数据
	Map<String,Object> getExtraParam( String bid) throws Exception;
}